%include "nodo.mac"
extern free

;void liberar_lista(Lista* lista)
global liberar_lista

%define ptr_lista [ebp + 8]
section .text

liberar_lista:
	push ebp				; creo el marco de la pila
	mov ebp, esp			

	push ebx				; salvo registros convencion C
	push edi			
	push esi			

	mov edi, ptr_lista		; edi apunta al primero de la lista
	mov esi, [edi]			; esi tiene el primer nodo

borrar_nodo:
	cmp esi, 0				; si el nodo actual es null, termine
	je borrar_lista
	mov ebx, [esi + _prox]	; ebx = nodo sgte al actual
ver1:
	push esi
	call free				; libero el primer nodo de la lista
	add esp, 4
	mov esi, ebx			; esi = sgte nodo
	jmp borrar_nodo

borrar_lista:
	push edi
	call free
	add esp, 4

fin:
	pop esi					; desarmo el marco de pila
	pop edi	
	pop ebx
	pop ebp

	ret
